<!doctype html>
<html lang="en">

<head>
    <meta charset="UTF-8"/>
    <meta name="description" content="A easy, small, straight forward Java CRUD Helper"/>
    <meta name="keywords" content="SqlMan, document, java sql, java jdbc, java orm, jdbc tools, jdbc helper"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <meta name="renderer" content="webkit"/>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
    <script src="https://g.alicdn.com/code/lib/vue/2.7.16/vue.min.js"></script>
    <link rel="stylesheet" href="https://framework.ajaxjs.com/static/font/font.css"/>
    <link rel="stylesheet" href="/style/index.css"/>
    <link rel="icon" type="image/png" href="/asset/favicon.png"/>
    <script src="/asset/js/website.js"></script>

    <link rel="stylesheet" href="/style/blog.css"/>
</head>

<body class="blog">
<header class="top">
    <a class="github-fork-ribbon" href="https://github.com/lightweight-component/SqlMan" data-ribbon="Fork me on GitHub"
       title="Fork me on GitHub">Fork me on GitHub</a>
    <div>
        <nav>

            <div id="tools">
                <div class="locales-btn" onmousemove="document.querySelector('#tools menu').classList.add('show')"
                     onmouseleave="document.querySelector('#tools menu').classList.remove('show')">
                    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewBox="0 0 24 24" style="max-width: 42px;">
                        <path d="M0 0h24v24H0z" fill="none"></path>
                        <path
                                d=" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z "
                                class="css-c4d79v"></path>
                    </svg>
                    <menu onmousemove="document.querySelector('#tools menu').classList.add('show')"
                          onmouseleave="document.querySelector('#tools menu').classList.remove('show')">
                        <ul>
                            <li><a href="https://sqlman.ajaxjs.com">English »</a></li>
                            <li><a href="https://sqlman.ajaxjs.com/cn-s">简体中文 »</a></li>
                            <li><a href="https://sqlman.ajaxjs.com/cn">正体中文 »</a></li>
                        </ul>
                    </menu>
                </div>
                <my-switch v-model="isDark"></my-switch>
            </div>
            <ul>
                <li><a href="/index.html">Home</a></li>
                <li><a href="/docs">Documents</a></li>
                <li><a href="/blog">Blog</a></li>
                <li><a href="https://github.com/lightweight-component/SqlMan" target="_blank">SourceCode</a></li>
            </ul>

        </nav>

        <div class="img">
            <img id="main-img" src="/asset/img.jpg" width="500" alt=""/>
            <div>This has nothing to do with the "Dragon Ball";<br/> I just happen to be a fan of this comic.</div>
        </div>
        <div class="text">
            <h1>Welcome to SqlMan!</h1>
            <h2>A easy, small, straight forward Java CRUD Helper.</h2>
            <p>SqlMan is a lightweight wrapper over JDBC. It is NOT an ORM but follows a SQL-first approach. It allows
                you
                to use pure SQL with IF/forEach and pass Map parameters for queries or executions. The results you
                receive
                are either 'isOk' indicators and 'Map' or Java Bean object(s). SqlMan enables fast CRUD database
                operations
                with ZERO dependencies, except for the JDK.
            </p>

            <br/>
            <br/>
            <p>Similar libraries：Spring JDBC Template, Apache Commons DbUtils, Jdbi3.</p>

            <br/>
            <br/>
            <button class="primary" onclick="location.assign('/docs/quick-start')">Getting Start</button>
            <button onclick="window.open('https://github.com/lightweight-component/SqlMan')">Git Code</button>
        </div>

    </div>
</header>
<div class="content main">
    <h1>
        Blog List
    </h1>
    <div class="list">
        <ul>
            <li>
                <a href="2">
                    <h1>Why I so recommend 'SQL First'?</h1>
                </a>
                <p>Looking at backend development as a whole, most of the work revolves around database
                    development (commonly
                    referred to as "CRUD Boy"). How we interact with databases is closely related to our
                    development experience.
                    The industry frequently discusses the "object-relational impedance mismatch," which lies at
                    the heart of the
                    issue: given that we have two different "programming worldviews"—a relational model database
                    (SQL) and a
                    programming language (Java, C#, Go)—each with its own methodologies, use cases, and ways of
                    thinking, how
                    can they coexist harmoniously and exchange information? Clearly, the "impedance mismatch" is
                    not an easy
                    problem to solve.</p>
                <div>
                    <a href="2">Read more »</a>
                    2024-12-25 by Frank Cheung
                </div>
            </li>
            <li>
                <a href="1">
                    <h1>New code, new project, new site</h1>
                </a>
                <p>
                    I can't remember how many iterations this project has gone through. It's been at least eight
                    years since I first attempted to encapsulate JDBC API, and throughout this time, I've been
                    obsessed with achieving a better implementation to improve development efficiency.
                    Gradually, I've developed an overall approach and have implemented it in code, but something
                    always feels off; the components just don't seem to be as user-friendly as they should be.
                    This led me to realize that the issue lies with the API style. Having pinpointed the
                    problem, I plan to refactor once again, aiming to make it more usable, clearer, and more
                    intuitive. Honestly, designing the right style requires inspiration...
                    <!--
                    我已经不记得是第几次迭代这个项目了，过去那么多年（起码八年以上），从我第一次尝试封装 JDBC 开始，
                    我一直执迷于更好的实现，以便提高开发效率。整体思路渐渐是有了，也编码好了，但总感觉哪里别扭，组件都觉得不好用。
                    于是发现就是 API 风格问题。既然到位了问题 那么就再重构一次，目标是使其更易用、更清晰、更一目了然。老实说，风格的设计需要灵感…… -->
                </p>
                <div><a href="1">Read more »</a>
                    2024-12-05 by Frank Cheung
                </div>
            </li>
        </ul>
    </div>
</div>

<footer>
    SqlMan, a part of <a href="https://framework.ajaxjs.com" target="_blank">AJ-Framework</a> open source. Mail:
    frank@ajaxjs.com, visit <a href="https://blog.csdn.net/zhangxin09" target="_blank">my blog(In Chinese)</a>.
    <br/>
    <br/>
    Copyright © 2025 Frank Cheung. All rights reserved.
    <script>
        var _hmt = _hmt || [];
        (function() {
          var hm = document.createElement("script");
          hm.src = "https://hm.baidu.com/hm.js?3cb62106ad945fc91efddfe250e1542e";
          var s = document.getElementsByTagName("script")[0];
          s.parentNode.insertBefore(hm, s);
        })();

    </script>
</footer>
</body>

</html>